package apiday05.homework.day05;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 要求用户输入若干员工信息，格式为：
 * name,age,gender,salary,hiredate;name,age,gender,salary,hiredate;....
 * 例如:
 * 张三,25,男,5000,2006-02-15;李四,26,女,6000,2007-12-24;...
 * 然后将每个员工信息解析成Emp对象。并存入到一个List集合中。
 * 并对集合排序，然后输出每个员工信息。
 * <p>
 * 再根据员工的入职时间排序，入职晚的在前，早的在后并
 * 输出每个员工的信息。
 *
 * @author Xiloer
 */
public class Test03 {
    public static void main(String[] args) {
//        张三,25,男,5000,2006-02-15;王老五,33,男,6500,2008-05-06;赵钱孙李,27,女,5480,2006-2-16;李四,26,女,6000,2007-12-24;
        List<Emp> empList = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        System.out.println("请依次输入姓名、年龄、性别、薪资：（格式为：张三,25,男,5000,2006-02-15;李四,26,女,6000,2007-12-24;...）");
        //输入所有员工信息
        String input = sc.nextLine();
//        将每个员工信息解析成Emp对象，并存入到List集合中
        String[] data = input.split("[；;]");
        for (String datum : data) {
            Emp emp = new Emp();
            String[] info = datum.split(",");
            emp.setName(info[0]);
            emp.setAge(Integer.parseInt(info[1]));
            emp.setGender(info[2]);
            emp.setSalary(Integer.parseInt(info[3]));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 定义日期格式
            try {
                emp.setHiredate(sdf.parse(info[4]));//parse()将字符串转为对象
            } catch (ParseException e) {
                System.out.println("格式不正确");
            }
//            Emp对象存入到List集合
            empList.add(emp);
        }
//        对集合排序，然后输出每个员工信息
        System.out.println("默认排序：");//按年龄升序
        Collections.sort(empList);
        for (Emp e : empList) {
            System.out.println(e);
        }
//        根据员工的入职时间排序，入职晚的在前，早的在后并输出每个员工的信息。
        System.out.println("根据员工的入职时间排序，入职晚的在前，早的在后：");
        Collections.sort(empList, Comparator.comparing((Emp emp) -> emp.getHiredate()).reversed());
//        empList.sort(Comparator.comparing(Emp::getHiredate).reversed());//效果同上一行
        for (Emp e : empList) {
            System.out.println(e);
        }
        sc.close();
    }
}
